import requests

# 创建全局 session，用于自动传递 token
session = requests.Session()


def token_login(username="leopold", password='123456'):
    """
    登录接口，返回响应对象，并自动更新 session 的 headers
    """
    url = "http://127.0.0.1:8080/pinter/bank/api/login2"
    data = {"userName": username, "password": password}
    resp = session.post(url, data=data)

    # 获取响应中的 token
    resp_json = resp.json()
    token = resp_json.get('data')

    if token:
        # 将 token 写入全局 session
        session.headers.update({"testfan-token": token})
        print(f"登录成功，token: {token}")
    else:
        print("登录失败，未获取到token")

    return resp  # 返回响应对象（测试用例中可断言）


def token_query(username="leopold"):
    """
    查询接口，自动使用 session 携带 token
    """
    url = "http://127.0.0.1:8080/pinter/bank/api/query2"
    params = {"userName": username}
    resp = session.get(url, params=params)

    print(f"响应状态码: {resp.status_code}")
    print(f"响应数据: {resp.json()}")
    return resp


def token_logout(username="admin"):
    """
    登出接口，自动使用 session 携带 token
    """
    url = f"http://127.0.0.1:8080/pinter/bank/api/logout?userName={username}"
    resp = session.get(url)

    print(f"响应状态码: {resp.status_code}")
    print(f"响应数据: {resp.json()}")
    return resp


if __name__ == '__main__':
    # 登录
    login_resp = token_login()
    # 从响应中提取 token（如果需要单独使用）
    token = login_resp.json().get('data')
    print(token)
    token_query()
    token_logout()
